

#pragma once

#include "zdbmain.h"

#pragma pack(push, 8)

#pragma warning( disable: 4275 4251 )

#ifdef SCENEDLLIMPEXP
#undef SCENEDLLIMPEXP
#endif
#ifdef SCENEOE
#define SCENEDLLIMPEXP __declspec( dllexport )
#else
#define SCENEDLLIMPEXP
#endif

const ZTCHAR UCDB_MOTIONPATH_DICTIONARY[]  = UCRX_T("ACAD_MOTION");

Ucad::ErrorStatus SCENEDLLIMPEXP ucdbGetMotionPathDictionary   (UcDbDatabase* pDb, UcDbDictionary*& pDict,
                                                            UcDb::OpenMode mode, bool createIfNonExist);
Ucad::ErrorStatus SCENEDLLIMPEXP ucdbGetMotionPathDictionary   (UcDbDatabase* pDb, UcDbDictionary*& pDict,
                                                            UcDb::OpenMode mode);

class UcDbImpMotionPath;

class SCENEDLLIMPEXP UcDbMotionPath : public UcDbObject
{
public:
    UCRX_DECLARE_MEMBERS(UcDbMotionPath);
	UcDbMotionPath();
    virtual ~UcDbMotionPath();

    UcDbObjectId        cameraPath() const;
    Ucad::ErrorStatus   setCameraPath(const UcDbObjectId& id);

    UcDbObjectId        targetPath() const;
    Ucad::ErrorStatus   setTargetPath(const UcDbObjectId& id);

    UcDbObjectId        viewTableRecordId() const;
    Ucad::ErrorStatus   setViewTableRecordId(const UcDbObjectId& id);

    ZSoft::UInt32       frames() const;
    Ucad::ErrorStatus   setFrames(ZSoft::UInt16 frames);

    ZSoft::UInt32       frameRate() const;
    Ucad::ErrorStatus   setFrameRate(ZSoft::UInt16 rate);

    bool				cornerDecel() const;
    Ucad::ErrorStatus   setCornerDecel(bool cornerDecel);
    virtual Ucad::ErrorStatus dwgInFields  (UcDbDwgFiler* pFiler);
    virtual Ucad::ErrorStatus dwgOutFields (UcDbDwgFiler* pFiler) const;
    virtual Ucad::ErrorStatus dxfInFields  (UcDbDxfFiler* pFiler);
    virtual Ucad::ErrorStatus dxfOutFields (UcDbDxfFiler* pFiler) const;
    virtual ZSoft::UInt32  setAttributes (UcGiDrawableTraits* pTraits);

protected:

    UcDbImpMotionPath* imp() const;

private:
    friend class UcDbImpMotionPath;
    UcDbImpMotionPath* mpImp;
};

